Unity 生命周期函数

Unity 生命周期函数

🎮

优先级

Snipaste_2022-11-30_14-41-15.png

Awake() 当点击play按钮,所有组件载入时将被视为Awake,如果inspector内的该脚本没有启用,但挂载到该游戏物体上依然可以触发

👇

OnEnable() 载入后将被执行一次,事实上它相当于勾选启用该物体 该函数优先级大于Start

👇

Start() 世俗意义上脚本运行后第1个被执行的函数。 和 Awake() 放置顺序无关,它永远慢于Awake()

👇

FixedUpdate() 刚体应该放在这个里面每0.02秒执行一次,而非每一帧执行一次

👇

Update() 最经典的生命周期函数 每一帧运行一次 跟电脑性能有关

👇

LateUPdate() 每一帧运行一次 如果和Update()同时存在,必然是等Update()的第一帧运行后才会执行,是👆面那个函数的跟屁🐛 同样跟电脑性能有关,该函数用的不多


留意

  1. Time.deltaTime() 本帧与上一帧的间隔时间

  2. 当游戏物体被禁用时 Awake() 和 Start() 都不会执行,反复禁用开启Awake() 和 Start() 也只会执行一次

  3. OnDestroy() 当游戏对象被禁用(从一开始就被禁用到结束),Destroy 不会被监听
    刚开始被禁用然后启用又禁用,或开始没有禁用,运行之后禁用了,Destroy 还是会被监听


Reset() 只会在inspector面板生效,在挂载时和未播放时点击reset时会触发 在编辑器内生效

OnGUI() 是一个ui系统,严格来说,每当game窗口刷新时候都会执行这里面的代码


OnDisable() 当被取消勾选启用时,会触发 该函数优先级大于OnDestroy 先禁用再销毁

OnDestroy() 当在inspector移除该脚本时触发,同样hierarchy内删除物体时也会触发


建议&总结

Awake() 适合创建游戏对象

Start() 适合获取游戏对象组件

好处👉不会造成指针报错

Snipaste_2022-11-30_18-00-50.png

作者

发布于

2022-11-30

更新于

2023-01-10

许可协议